package com.lanyou.esb.cook.proxy.service;

import com.lanyou.esb.cook.proxy.entity.FieldSystem;
import com.lanyou.esb.cook.proxy.exception.AuthException;
import com.lanyou.esb.cook.proxy.meta.SystemType;

/**
 * 领域系统服务接口
 * 
 * @author Davey.wu
 */
public interface FieldSystemService {
	/**
	 * 加载所有领域系统到REDIS
	 */
	void loadAllToRedis();

	/**
	 * 根据系统编码获取领域系统
	 * 
	 * @param code
	 *            ：系统编码
	 * @return
	 */
	FieldSystem getSystemByCode(String code);

	/**
	 * 重新加载
	 * 
	 * @param system
	 *            ：系统
	 * @return
	 */
	void reload(FieldSystem system);

	/**
	 * 校验系统可用性
	 * 
	 * @param system
	 *            ：系统
	 * @param type
	 *            ：系统类型
	 * @throws AuthException
	 */
	void validate(FieldSystem system, SystemType type) throws AuthException;
}
